/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2024年8月17日
 */
package org.springframework.core;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import org.springframework.lang.Nullable;

/**
 * 【假类】假的Spring类
 * @author MBG
 * 2024年8月17日
 */
public final class SerializableTypeWrapper {

	@Nullable
	public static Type forField(Field field) {
		return null;
	}

	@Nullable
	public static Type forMethodParameter(MethodParameter methodParameter) {
		return null;
	}

	public static <T extends Type> T unwrap(T type) {
		return null;
	}

	interface TypeProvider extends Serializable {

		@Nullable
		Type getType();

		@Nullable
		default Object getSource() {
			return null;
		}
	}

	@SuppressWarnings("serial")
	static class FieldTypeProvider implements TypeProvider {

		public FieldTypeProvider(Field field) {}

		@Override
		public Type getType() {
			return null;
		}

		@Override
		public Object getSource() {
			return null;
		}
	}

	@SuppressWarnings("serial")
	static class MethodParameterTypeProvider implements TypeProvider {

		public MethodParameterTypeProvider(MethodParameter methodParameter) {}

		@Override
		public Type getType() {
			return null;
		}

		@Override
		public Object getSource() {
			return null;
		}
	}

	@SuppressWarnings("serial")
	static class MethodInvokeTypeProvider implements TypeProvider {

		public MethodInvokeTypeProvider(TypeProvider provider, Method method, int index) {}

		@Override
		@Nullable
		public Type getType() {
			return null;
		}

		@Override
		@Nullable
		public Object getSource() {
			return null;
		}
	}

}





